/**
 * This file is part of Opintopaivakirja.
 *
 * Opintopaivakirja is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Opintopaivakirja is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Opintopaivakirja.  If not, see <http://www.gnu.org/licenses/>.
 */
package opintopaivakirja;

//import java.sql.Date;
//import java.util.ArrayList;

/**
 * Main luokka olioiden ajamiseen ilman GUI:ta
 *
 */
public class Main {
//
//    public static void main(String[] args) {
//        Kayttaja k = new Kayttaja();
//        Kayttaja kayttaja = null;
//
//        //
//        //---------------------------------------------------------------------
//        //
//
//        if (!Kayttaja.testaaTietokantayhteys()) {
//            System.out.println("Tietokantayhteden avaaminen EPÄonnistui!");
//            System.exit(1);
//        }
//        System.out.println();
//        System.out.println();
//
//        //
//        //---------------------------------------------------------------------
//        //
//
////        new Tietokanta().luoTietokanta();
//
//        System.out.println("KIRJAUTUMINEN...");
//        kayttaja = k.kirjauduSisaan("matti", "");
//
////        if (kayttaja.getEtunimi() == null) {
////            System.out.println("FAILED");
////            System.out.println();
////            kayttaja = new Kayttaja();
////            System.out.print("KÄYTTÄJÄN LISÄÄMINEN...");
////            kayttaja.setEtunimi("matti");
////            kayttaja.setSukunimi("vanhanen");
////            kayttaja.setSahkoposti("matti.vanhanen@keskusta.fi");
////            kayttaja.setOtunnus("020202");
////            kayttaja.setRtunnus("tite9");
////            kayttaja.setKayttajatunnus("mattiv");
////            kayttaja.setSalasana("passu");
////
////            if (kayttaja.lisaaKayttaja()) {
////                System.out.println("OK");
////                if (!kayttaja.tallennaKayttaja()) {
////                    System.out.println("FAILED");
////                }
////            } else {
////                System.out.println("FAILED");
////            }
////            System.out.println();
////
////            System.out.println("KIRJAUTUMINEN...");
////            kayttaja = k.kirjauduSisaan("mattiv", "passu");
////
////            if (kayttaja.getEtunimi() == null) {
////                System.exit(1);
////            }
////            System.out.println();
////
////        }
////
////        kayttaja.lisaaTemplate(1);
////        kayttaja.lisaaTemplate(2);
////        kayttaja.lisaaTemplate(3);
////        kayttaja.lisaaTemplate(4);
////        kayttaja.lisaaTemplate(5);
////
////        System.out.println("KÄYTTÄJÄN MUOKKAAMINEN JA MUUTOSTEN TALLENTAMINEN...");
////        kayttaja.setSahkoposti("matti.vanhanen@eduskunta.fi");
////        if (!kayttaja.tallennaKayttaja()) {
////            System.out.println("FAILED");
////        }
////        System.out.println();
////        System.out.println();
//
//        /*kayttaja.poistaKayttaja();*/
//
//        //
//        //---------------------------------------------------------------------
//        //
//
//        // lisätään käyttäjälle projekteja
//        Date date = null;
//
//        /*
//        System.out.println("PROJEKTIN LUOMINEN (Yleismuistiinpanot)");
//        String pnimi = "Yleismuistiinpanot";
//        String pesittely = "Yleismuistiinpanot on tarjoitettu yleisille muistiinpanoille.";
//        String parviointi = "Loppuarviointi tähän";
//        String plinkki = "";
//        int parvosana = 0;
//        int parvosana_oma = 0;
//        int pisa = 0;
//        int pasema = 0;
//
//        Date palku = date.valueOf("2009-01-01");
//        Date ploppu = date.valueOf("2099-01-01");
//
//        Projekti p = new Projekti(pnimi, pesittely, parviointi, plinkki, parvosana, parvosana_oma, pisa, pasema, palku, ploppu);
//
//        kayttaja.setProjekti(p);
//        kayttaja.tallennaProjekti(p);
//
//        System.out.println("PROJEKTIN LUOMINEN (Termipankki)");
//        String ppnimi = "Termipankki";
//        String ppesittely = "Termipankki on tarkoitettu sanakirjaksi termeille ja määritelmille.";
//        String pparviointi = "Loppuarviointi tähän";
//        String pplinkki = "";
//        int pparvosana = 0;
//        int pparvosana_oma = 0;
//        int ppisa = 0;
//        int ppasema = 0;
//
//        Projekti pp = new Projekti(ppnimi, ppesittely, pparviointi, pplinkki, pparvosana, pparvosana_oma, ppisa, ppasema, palku, ploppu);
//
//        kayttaja.setProjekti(pp);
//        kayttaja.tallennaProjekti(pp);
//
//        System.out.println("PROJEKTIN LUOMINEN (DI-tutkinto)");
//        String dpnimi = "DI-tutkinto (Malli)";
//        String dpesittely = "DI-tutkinto on valtakunnallisesti tunnustettu korkeampi korkeakoulututkinto.";
//        String dparviointi = "Loppuarviointi tähän";
//        String dplinkki = "http://www.tut.fi/pori";
//        int dparvosana = 0;
//        int dparvosana_oma = 0;
//        int dpisa = 0;
//        int dpasema = 0;
//
//        Projekti dp = new Projekti(dpnimi, dpesittely, dparviointi, dplinkki, dparvosana, dparvosana_oma, dpisa, dpasema, palku, ploppu);
//
//        kayttaja.setProjekti(dp);
//        kayttaja.tallennaProjekti(dp);
//
//
//
//        kayttaja.haeProjektit();
//
//        System.out.println("PROJEKTIN LUOMINEN (Pääaine)");
//        String spnimi = "Pääaine (Malli)";
//        String spesittely = "DI-tutkinnon pääaineopinnot.";
//        String sparviointi = "Loppuarviointi tähän";
//        String splinkki = "http://www.pori.tut.fi/cose/";
//        int sparvosana = 0;
//        int sparvosana_oma = 0;
//        int spisa = 3;
//        int spasema = 0;
//
//        Date palku = date.valueOf("2009-01-01");
//        Date ploppu = date.valueOf("2099-01-01");
//
//        Projekti sp = new Projekti(spnimi, spesittely, sparviointi, splinkki, sparvosana, sparvosana_oma, spisa, spasema, palku, ploppu);
//
//        kayttaja.setProjekti(sp);
//        kayttaja.tallennaProjekti(sp);
//
//
//
//        kayttaja.haeProjektit();
//
//        System.out.println("PROJEKTIN LUOMINEN (Ohjelmistoprojekti)");
//        String opnimi = "Ohjelmistoprojekti (Malli)";
//        String opesittely = "Opintojakso, jolla tuotetaan opiskelijoiden muodostamissa ryhmissä projektimuotoisesti ohjelmisto.";
//        String oparviointi = "Loppuarviointi tähän";
//        String oplinkki = "";
//        int oparvosana = 0;
//        int oparvosana_oma = 0;
//        int opisa = 4;
//        int opasema = 0;
//        Date oalku = date.valueOf("2009-01-01");
//        Date oloppu = date.valueOf("2009-05-01");
//
//        Projekti op = new Projekti(opnimi, opesittely, oparviointi, oplinkki, oparvosana, oparvosana_oma, opisa, opasema, oalku, oloppu);
//
//        kayttaja.setProjekti(op);
//
//        kayttaja.tallennaProjekti(op);
//
//         */
//        // luodaan teplateprojektit 1
////        System.out.print("KÄYTTÄJÄN TEMPLATE-PROJEKTIEN LUOMINEN...");
////        kayttaja.lisaaTemplate(1); // 1 DI, 2 MBA, 3 AMK
////        System.out.println();
//
//        /*
//
//        //
//        //---------------------------------------------------------------------
//        //
//
//        kayttaja.haeProjektit();
//
//        // lisätään projekteille muistiinpanoja
//        System.out.println("LISÄTÄÄN MUISTIINPANO");
//
//        Projekti po = kayttaja.getProjektit().get(3);
//
//        String totsikko = "Tavoitteen otsikko";
//        String tasia = "Tavoitteen sisältö";
//        int ttyyppi = 1;
//        int tjarjestys = 0;
//        int tisa = 0;
//
//        Muistiinpano t = new Tavoite(totsikko, tasia, ttyyppi, tjarjestys, tisa);
//
//        po.setMuistiinpano(t);
//        kayttaja.tallennaProjekti(po);
//
//        String m1otsikko = "Muistiinpanon otsikko";
//        String m1asia = "Muistiinpanon sisältö";
//        int m1tyyppi = 2;
//        int m1jarjestys = 0;
//        int m1isa = 0;
//
//        Muistiinpano m1 = new Muistiinpano(m1otsikko, m1asia, m1tyyppi, m1jarjestys, m1isa);
//
//        po.setMuistiinpano(m1);
//
//        System.out.println("LISÄTÄÄN MUISTIINPANO");
//
//        String m2otsikko = "Muistiinpanon 2 otsikko";
//        String m2asia = "Muistiinpanon 2 sisältö";
//        int m2tyyppi = 2;
//        int m2jarjestys = 1;
//        int m2isa = 0;
//
//        Muistiinpano m2 = new Muistiinpano(m2otsikko, m2asia, m2tyyppi, m2jarjestys, m2isa);
//
//        po.setMuistiinpano(m2);
//
//        kayttaja.tallennaProjekti(po);
//         */
//
//        //
//        //---------------------------------------------------------------------
//        //
//
//        /*
//
//        kayttaja.haeProjektit();
//
//        Projekti po = null;
//        for (Projekti projekti1 : kayttaja.getProjektit()) {
//        if (projekti1.getId() == 2) {
//        po = projekti1;
//        }
//        }
//
//        Muistiinpano mu = po.getMuistiinpanot().get(0);
//
//        ArrayList<Tagi> tags = new ArrayList<Tagi>();
//        tags.add(new Tagi("tagisana"));
//        tags.add(new Tagi("ohjelmointi"));
//        tags.add(new Tagi("j2se"));
//
//        mu.setTagit(tags);
//
//        System.out.println("LISÄTÄÄN LINKKI");
//
//        String lotsikko = "Linkin otsikko";
//        String lurl = "http://www.google.com/";
//
//        Linkki l2 = new Linkki(lotsikko, lurl);
//
//        mu.setLinkki(l2);
//
//        System.out.println("LISÄTÄÄN LINKKI");
//
//        String liotsikko = "Linkin 2 otsikko";
//        String liurl = "http://www.iltalehti.fi/";
//
//        Linkki l3 = new Linkki(liotsikko, liurl);
//
//        mu.setLinkki(l3);
//
//
//        String lrotsikko = "Linkin P otsikko";
//        String lrurl = "http://www.google.com/";
//
//        Linkki lr2 = new Linkki(lrotsikko, lrurl);
//
//        mu.setLinkki(lr2);
//
//        kayttaja.tallennaProjekti(po);
//
//         */
//
//        //
//        //---------------------------------------------------------------------
//        //
//
//        /*
//        kayttaja.haeProjektit();
//
//        System.out.println("LIITETÄÄN MUISTIINPANO TAVOITTEESEEN");
//
//        Projekti po = null;
//        for (Projekti projekti1 : kayttaja.getProjektit()) {
//        if (projekti1.getId() == 2) {
//        po = projekti1;
//        }
//        }
//
//        System.out.println("ID " + po.getId() + " lkm " + po.getMuistiinpanot().size());
//         */
////        Muistiinpano ta = po.getMuistiinpanot().get(0);
////
////        Muistiinpano mu = po.getMuistiinpanot().get(1);
////        mu.setIsa(ta.getId());
////
////        kayttaja.tallennaProjekti(po);
//
//        //
//        //---------------------------------------------------------------------
//        //
//
//        kayttaja.haeProjektit();
//
//        System.out.println("SUORITETAAN HAKU");
//
//        String hakulause = "Vaihto";
//        String tagit = "";
//
//        ArrayList<Projekti> tulokset = kayttaja.haeTiedot(hakulause, tagit, true, true);
//
//        for (Projekti projekti : tulokset) {
//            System.out.println("projekti " + projekti.getNimi() + ", id " + projekti.getId() + ", asema " + projekti.getAsema());
//            for (Muistiinpano muistiinpano : projekti.getMuistiinpanot()) {
//                System.out.println("- otsikko " + muistiinpano.getOtsikko() + ", " +
//                        "asia " + muistiinpano.getAsia() + ", " +
//                        "id " + muistiinpano.getId() + ", " +
//                        "tyyppi " + muistiinpano.getTyyppi() + " " +
//                        "isa " + muistiinpano.getId());
//            }
//        }
//
//        //
//        //---------------------------------------------------------------------
//        //
//
//        // tulostetaan käyttäjän projektien tiedot
////        kayttaja.haeProjektit();
////
////        System.out.println();
////        System.out.println();
////        System.out.println("KÄYTTÄJÄN PROJEKTIEN TIEDOT");
////
////        // käyttäjän projektit
//        ArrayList<Projekti> projektit = kayttaja.getProjektit();
////
////        for (Projekti projekti : projektit) {
////            System.out.println(projekti.getNimi());
////
////            // projektin muistiinpanot
////            ArrayList<Muistiinpano> muistiinpanot = projekti.getMuistiinpanot();
////
////            if (!muistiinpanot.isEmpty()) {
////                System.out.print("muistiinpanojen lkm: " + muistiinpanot.size());
////                for (Muistiinpano muistiinpano : muistiinpanot) {
////                    System.out.println("- " + muistiinpano.getOtsikko());
////
//////                    if (muistiinpano instanceof Tavoite) {
//////                        System.out.println("Tämä on tavoite");
//////                    }
////
////                    // muistiinpanon linkit
////                    ArrayList<Linkki> linkit = muistiinpano.getLinkit();
////
////                    if (!linkit.isEmpty()) {
////                        for (Linkki linkki1 : linkit) {
////                            System.out.println(" @ " + linkki1.getOtsikko());
////                        }
////                    }
////
////                    // muistiinpanon tagit
////                    ArrayList<Tagi> t5 = muistiinpano.getTagit();
////
////                    if (!t5.isEmpty()) {
////                        for (Tagi tag : t5) {
////                            System.out.print(" [" + tag.getSana() + "] ");
////                        }
////                    }
////                    System.out.println();
////                    System.out.println();
////                }
////
////                // kayttajan tagit
////                Tagi tgi = new Tagi();
////                ArrayList<Tagi> kt = tgi.selectKayttajanTagit(kayttaja.getId());
////
////                if (!kt.isEmpty()) {
////                    for (Tagi tag : kt) {
////                        System.out.print(" [" + tag.getSana() + "] ");
////                    }
////                }
////                System.out.println();
////                System.out.println();
////            }
////
////        }
//
//        System.out.println();
//        System.out.println("Jarjestys");
//        System.out.println();
//        Projekti tmp = new Projekti();
//        for (Projekti node : tmp.jarjestaProjektit(projektit)) {
//            System.out.println(node.getNimi());
//            for (Projekti node2 : node.getLapsiprojektit()) {
//                System.out.println(" - " + node2.getNimi());
//                for (Projekti node3 : node2.getLapsiprojektit()) {
//                    System.out.println("   - " + node3.getNimi());
//                }
//            }
//        }
//        System.out.println();
//        System.out.println();
//
//
//        // ArrayList<Muistiinpano> hakutulokset = kayttaja.haeTiedot("hakusana", false, false);
//
//
//        /*
//         * Käyttäjän poistaminen poistaa kaikki käyttäjän
//         * tiedot, projektit, muistiinpanot jne...
//         *
//         */
////        System.out.println();
////        System.out.println("KÄYTTÄJÄN POISTAMINEN...");
////        if (!kayttaja.poistaKayttaja()) {
////            System.out.print("FAILED");
////        }
//
//        new Tietokanta().sammutaTietokanta();
//
//
//    }
//
}
